package cn.rengy.tpa.wxmp.pay.protocol.pay_result_notify;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import cn.rengy.tpa.wxmp.util.WXPayConstants;
import lombok.Getter;
import lombok.Setter;

/**
 * 支付结果业务对象
 * <p>
 * 参考<a href="https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7">开发文档
 * </p>
 * <p/>
 */
@Getter
@Setter
public class PayResultDo {

	private String appid;
	private String mch_id;
	private String device_info;//微信支付分配的终端设备号，
	//private String nonce_str;//随机字符串，不长于32位
	//private String sign;//签名
	//private String sign_type;//签名类型  否 String(32) HMAC-SHA256 签名类型，目前支持HMAC-SHA256和MD5，默认为MD5 
	//private PayCode result_code;//业务结果  是 String(16) SUCCESS SUCCESS/FAIL 
	//private String err_code;//错误代码  否 String(32) SYSTEMERROR 错误返回的信息描述 
	//private String err_code_des;//错误代码描述  否 String(128) 系统错误 错误返回的信息描述 
	private String openid;//用户在商户appid下的唯一标识 
	private Boolean is_subscribe;//是否关注公众账号 Y 用户是否关注公众账号，Y-关注，N-未关注 
	private WXPayConstants.TradeType trade_type;//JSAPI JSAPI、NATIVE、APP 
	private String bank_type;//银行类型，采用字符串类型的银行标识，银行类型见银行列表
	private BigDecimal total_fee;//订单金额  是 Int 100 订单总金额，单位为分 
	private BigDecimal settlement_total_fee;//应结订单金额=订单金额-非充值代金券金额，应结订单金额<=订单金额。
	private String fee_type;//货币种类  否 String(8) CNY 货币类型，符合ISO4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型 
	private BigDecimal cash_fee;//现金支付金额  是 Int 100 现金支付金额
	private String cash_fee_type;//CNY 货币类型，符合ISO4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型 
	private BigDecimal coupon_fee;//总代金券金额  否 Int 10 代金券金额<=订单金额，订单金额-代金券金额=现金支付金额
	private Integer coupon_count;//代金券使用数量  否 Int 1 代金券使用数量 
	private List<PayResultCoupon> payResultCouponList;
	private String transaction_id;//微信支付订单号 transaction_id 是 String(32) 
	private String out_trade_no;//商户系统内部订单号，要求32个字符内，
	private String attach;//商家数据包，原样返回 
	private Date time_end;//支付完成时间 格式为yyyyMMddHHmmss
}
